package br.com.rotaestatistica.daos;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import br.com.rotaestatistica.entities.LinhaEntity;
import br.com.rotaestatistica.utils.FabricaDeConexao;

public class LinhaDAO extends FactoryDAO {

	public List<LinhaEntity> selectAllLinhasAsList() {

		List<LinhaEntity> listaRetorno = new ArrayList<LinhaEntity>();
		Statement stm = null;
		ResultSet rs = null;
		try {
			stm = FabricaDeConexao.getConexao().createStatement();

			String sql = "SELECT * FROM Linha";

			rs = stm.executeQuery(sql);

			while (rs.next()) {
				LinhaEntity linha = new LinhaEntity();
				linha.setId_Linha(rs.getLong("idLinha"));
				linha.setNome(rs.getString("nome"));
				linha.setNumero(rs.getLong("numero"));
				linha.setQtd_estacoes(rs.getInt("qtdEstacoes"));
				linha.setId_Tipo(rs.getLong("id_tipo"));
				listaRetorno.add(linha);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				rs.close();
				stm.close();
				FabricaDeConexao.fechaConexao();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return listaRetorno;
	}

	public List<SelectItem> getAllLinhasAsSelectItems() {

		List<LinhaEntity> linhas = new ArrayList<LinhaEntity>();
		linhas = selectAllLinhasAsList();

		List<SelectItem> linhasAsSelectItems = new ArrayList<SelectItem>();

		for (LinhaEntity linhaEntity : linhas) {
			linhasAsSelectItems.add(new SelectItem(linhaEntity.getId_Linha(), linhaEntity.getNome()));
		}

		return linhasAsSelectItems;
	}

	public LinhaEntity selectLinhaById(long idLinha) {
		LinhaEntity linha = new LinhaEntity();
		PreparedStatement pstm = null;
		ResultSet rs = null;
		
		String sql = "SELECT * FROM Linha where idLinha =?";
		
		
		try {
			pstm = FabricaDeConexao.getConexao().prepareStatement(sql);
			pstm.setLong(1, idLinha);
			
			rs = pstm.executeQuery();

			while (rs.next()) {
				linha.setId_Linha(rs.getLong("idLinha"));
				linha.setNome(rs.getString("nome"));
				linha.setNumero(rs.getLong("numero"));
				linha.setQtd_estacoes(rs.getInt("qtdEstacoes"));
				linha.setId_Tipo(rs.getLong("id_tipo"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				rs.close();
				pstm.close();
				FabricaDeConexao.fechaConexao();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return linha;
	}

	/*
	 * public boolean insertLinha(LinhaEntity linha) {
	 * 
	 * }
	 * 
	 * public boolean deleteLinhaById(long idLinha) {
	 * 
	 * }
	 * 
	 * public boolean updateLinha(LinhaEntity linha) {
	 * 
	 * }
	 */
}
